# -*- coding: utf-8 -*-
from contenidos.models import MUGSHOT_SETTINGS
from datos_taxonomicos.models import Dato
from django.db import models
from documentos.models import Documento
from easy_thumbnails.fields import ThumbnailerImageField
from estados_de_proyecto.models import EstadoProyecto
from expertos.models import Experto
from genericm2m.models import RelatedObjectsDescriptor
from instituciones.models import Institucion
from lineas_de_investigacion.models import LineaInvestigacion
from localidades.models import Localidad, Lugar
from organismos_financiadores.models import OrganismoFinanciador
from publicaciones.models import Publicacion
from userena.models import upload_to_mugshot
from usuarios.models import Rol
from django.utils.translation import ugettext_lazy as _

# Create your models here.
class Proyecto(models.Model):
    nombre = models.CharField(max_length=50,verbose_name='*Nombre')
    fecha_inicio = models.DateField(verbose_name='Fecha de Inicio',blank=True,null=True)
    fecha_fin = models.DateField(verbose_name='Fecha de Fin',blank=True,null=True)
    capital = models.CharField(max_length=50,verbose_name=u'Capital (US$)',blank=True,null=True)
    descripcion = models.TextField(verbose_name='*Breve Descripción')
    paginaweb = models.URLField(verbose_name='Página Web',blank=True,null=True)
    contacto = models.EmailField(verbose_name='Contacto Email',blank=True,null=True)
    
    #relacion con Estado de proyecto
    estado = models.ForeignKey(EstadoProyecto,verbose_name='*Estado de Proyecto')

    #relacion con Organismo financiador, muchos organismos financiadores
    organismos_financiadores = models.ManyToManyField(OrganismoFinanciador,verbose_name='Organismo Financiador',blank=True,null=True)
    
    #relacion con Institucion, muchas instituciones
    instituciones = models.ManyToManyField(Institucion,verbose_name='Relacionar a Instituciones',blank=True,null=True)
    
    #relacion con dato taxonomico
    datos = models.ManyToManyField(Dato, verbose_name=u'Relacionar a Dato Taxońomico',blank=True,null=True,help_text='Relación con algun dato taxonómico')
    
    #relacion con Localidad, muchas localidades
    localidades = models.ManyToManyField(Lugar, verbose_name='Localidades',blank=True,null=True)
    
    #relacion con Linea de investigacion, muchas lineas de investigacion
    lineas_de_investigacion = models.ManyToManyField(LineaInvestigacion,verbose_name='Relacionar a Lineas de Investigación',blank=True,null=True)
    
    #relacion con experto
    encargados = models.ManyToManyField(Experto, verbose_name='Expertos Encargados',related_name='expertos_encargados',blank=True,null=True)
    
    #relacion con experto
    involucrados = models.ManyToManyField(Experto, verbose_name='Expertos Involucrados',related_name='expertos_involucrados',blank=True,null=True)
    
    #relacion con documentos
    documentos = models.ManyToManyField(Documento, verbose_name='Relacionar Documentos',related_name='documentos_relacionados',blank=True,null=True)
    
    #relacion con publicaciones
    publicaciones = models.ManyToManyField(Publicacion, verbose_name='Relacionar Publicaciones',related_name='publicaciones_relacionadas',blank=True,null=True)
    
    #relacion con rol
    nivel_acceso = models.ForeignKey(Rol,verbose_name='Nivel de Acceso',blank=True,null=True)
    
    #relacion generica con localidades diferentes lugares
    todos_los_lugares = RelatedObjectsDescriptor()
    
    #relacion generica con localidades diferentes lugares
    creador = models.ForeignKey(Experto,blank=True,null=True,related_name='creador_de_proyecto' )
    
    logo = ThumbnailerImageField(_('Logo'),
                                    upload_to=upload_to_mugshot,
                                    resize_source=MUGSHOT_SETTINGS,
                                    blank=True,
                                    help_text= u'Logo exhibido en el perfil de Proyecto')
    
    def __unicode__(self):
        return self.nombre
    def referencia_al_link(self):
        return '/proyectos/' + str(self.id)
    def en_detalle_html(self):
        datos = [
                 u'Nombre : %s' % self.nombre,
                 u'Fecha de Inicio: %s' % self.fecha_inicio,
                 u'Fecha de Fin : %s' % self.fecha_fin,
                 u'Capital : %s' % self.capital,
                 u'Página Web %s: ' % self.paginaweb,
                 u'Email : %s' % self.contacto,
                 u'Estado de Proyecto : %s' % self.estado
                 ]
        return datos

    def get_dos_paises(self):
        try:
            pais1 = self.todos_los_lugares.all().generic_objects()[0]
        except:
            return ''
        try:
            pais2 = self.todos_los_lugares.all().generic_objects()[1]
        except:
            if pais1:
                return u'%s' % (pais1 )
        try:
            pais3 = self.todos_los_lugares.all().generic_objects()[2]
            if pais1 and pais2 and pais3:
                return u'%s, %s, ...' % (pais1,pais2)
        except:
            if pais1 and pais2:
                return u'%s, %s' % (pais1,pais2)
        return ''
        
    
